# -*- coding: utf-8 -*-
import argparse
import asyncio
from Agents.masteragent import MasterAgent
import hashlib
def get_md5_for_md_file(file_path):
    try:
        # 创建MD5哈希对象
        md5_hash = hashlib.md5()

        # 以二进制模式打开文件
        with open(file_path, 'rb') as file:
            # 分块读取文件内容，每次读取4096字节
            for chunk in iter(lambda: file.read(4096), b""):
                # 更新哈希对象
                md5_hash.update(chunk)

        # 获取十六进制格式的MD5哈希值
        md5_digest = md5_hash.hexdigest()
        return md5_digest
    except FileNotFoundError:
        print(f"未找到文件: {file_path}")
        return None
    except Exception as e:
        print(f"处理文件时出现错误: {e}")
        return None
def main():
    # 创建 ArgumentParser 对象
    parser = argparse.ArgumentParser(description='处理命令行传入的 topic 参数并保存结果到 review.md')
    # 添加 --topic 参数
    parser.add_argument('--topic', type=str, required=True, help='指定 topic 信息')
    # 添加 --token 参数
    parser.add_argument('--token', type=str, required=True, help='指定 API 的 token')
    # 添加 --filename 参数
    parser.add_argument('--filename', type=str, required=True, help='指定文件名')
    # 解析命令行参数
    args = parser.parse_args()

    # 获取传入的 topic 和 token 值
    topic = args.topic
    token = args.token
    filename = args.filename

    master_agent = MasterAgent(topic, token)  # 修改初始化，传入 token
    print("已初始化完毕")

    # 异步运行 master_agent 的 run 方法
    loop = asyncio.get_event_loop()
    final_content = loop.run_until_complete(master_agent.main())
    with open(f"{filename}.md", 'w', encoding='utf-8') as file:
        file.write(final_content)
    print("已完成所有任务")
    md5 = get_md5_for_md_file(f"{filename}.md")
    if md5:
        print(f"文件 {filename}.md 的 MD5 哈希值是: {md5}")
    else:
        print(f"无法获取文件 {filename}.md 的 MD5 哈希值")
    return final_content


if __name__ == "__main__":
    main()
